clear all;clc
% M = 4;
% n = 2^M-1;   % Codeword length
% k = 5;       % Message length
% nwords = 10; % Number of words to encode
% %% 建立一个消息
% msgTx = gf(randi([0 1],nwords,k));
% %% 看看能纠错几位
% t = bchnumerr(n,k)
% %% 编码
% enc = bchenc(msgTx,n,k);
% %% 损坏一些位数
% noisycode = enc + randerr(nwords,n,1:t);
% %% 解码
% msgRx = bchdec(noisycode,n,k);
% %% 验证
% isequal(msgTx,msgRx)
%% BCH(MSG,63,45),BCH(MSG,31,16) 均只能纠错3位
% 测试BCH(31,16);16位消息编码成31位，抵抗3位错
msg=round(rand(1,16));
enc_msg=double(bchenc(gf(msg,1),31,16).x);
%搞点攻击
% enc_msg(2)=1-double(enc_msg.x(2)));

dec_msg=bchdec(gf(enc_msg,1),31,16);
BER=sum(abs(double(dec_msg.x)-msg))